import 'package:flutter/cupertino.dart';
import 'package:mybaseplus/base/tool/empty/FFEmpty.dart';
import 'package:sprintf/sprintf.dart';

extension FFStringExt on String {
  String format(List<String?> list) {
    return sprintf(this, list);
  }

  int toINT({
    int defaultValue = 0,
  }) {
    if (this == null) {
      return defaultValue;
    }

    if (FFEmpty.stringIsEmpty(this)) {
      return defaultValue;
    }

    try {
      return int.parse(this ?? "$defaultValue");
    } catch (e) {
      return defaultValue;
    }
  }

  num toNum({
    int defaultValue = 0,
  }) {
    if (this == null) {
      return defaultValue;
    }

    if (FFEmpty.stringIsEmpty(this)) {
      return defaultValue;
    }

    try {
      return num.parse(this ?? "$defaultValue");
    } catch (e) {
      return defaultValue;
    }
  }
}

extension FFStringExt2 on String? {
  int toINT({
    int defaultValue = 0,
  }) {
    if (this == null) {
      return defaultValue;
    }

    if (FFEmpty.stringIsEmpty(this)) {
      return defaultValue;
    }

    try {
      return int.parse(this ?? "$defaultValue");
    } catch (e) {
      return defaultValue;
    }
  }

  num toNum({
    int defaultValue = 0,
  }) {
    if (this == null) {
      return defaultValue;
    }

    if (FFEmpty.stringIsEmpty(this)) {
      return defaultValue;
    }

    try {
      return num.parse(this ?? "$defaultValue");
    } catch (e) {
      return defaultValue;
    }
  }
}
